galerias de imagenes

Galeria de covers (se puede usar una carpeta, estatica o dynamica)

Slider covers

Slider dynamicos con covers de TFC

Dibujando paso a paso

¡NUEVO ESTA SEMANA!​

Guardo esta seccion ya que contiene las novedades pero hechas por la consulta de Bricks, porque en las que uso son todas custom

Uso de loops con cct

Lo guardo por si en algun momento necesito utilzar CCT

nada

slider con blogs

Quedan muy bienn

Post loops (Con widget de post)

Para usar con blog, contenido, en el dashboard probablemente y mas

Post loops (Con widget de post)

En este ejemplo es lo mismo pero con los covers

CARGAR MÁS

Grid (Nested) - Ejemplo Covers

Aca se puede usar todo totalmente libre. Diseño y query.Se configura asi:

Se configura asi:

Block principal:

* Sin loop
* Flex wrap = Wrap
* Se pone el column y row gap deseado = 30px por ejemplo
* Direccion = Horizontal (row). El dibujo de columnas
* Layout = 100% witdh (para que ocupe todo el anoche del contenedor donde este)

Block interno:

* Con loop (Y se elige el query deseado)
* Flex wrap = No wrap
* Direction = Vertical (dibujo tipo filas)
* Flex basis = calc((100% – (3 * 30px)) / 4)

Explicacion de la formula de calculo Flex basis: el 4 del final es la cantidad de columnas totoales que quiero, el 3 es restarle una para que no tenga el gap de la ultima, y el 30px es el gap que haya puesto en el block principal.

* Para 3 columnas y 20 de gap seria: calc((100% – (2 * 20px)) / 3)
* Para 2 columnas y 20 de gap seria: calc((100% – (1 * 20px)) / 2)

CARGAR MÁS

Condicionales de membresias y otros

Para usar con blog, contenido, en el dashboard probablemente y mas

DRAWING COURSE

BROWSE LESSON PLAN

Acordiones con loop (Simple)

¡Sacate todas las dudas!

unete ahora

y accede al instante!

IDEAS

Guias de bricks

Aca dejo algunas guías o ideas de bricks para poder usar mas adelante

Pendiente:
* Grids distintos (Incluido el que tiene un producto relacionado)
* Condicionales donde muestro u oculto segun la membresia activa
* Unificar el codigo que devuelve "Acceso permitido" del que es de afuera con el de adentro asi se puede usar un solo codigo en todo y una sola formula.

IDEA 1

Indicador de acceso con post ID

Verifica si la persona puede o no acceder a un post, chequeando si compro el producto seleccionado en el campo "producto-relacionado" de Jetengine. En caso positivo devuelve "Acceso permitido", sino "Acceso denegado"
Tengo 2 codigos, uno para usar externo (En grids o paginas) u otro para usar cuando ya ingresa al post.

Codigo para usar un Post ID (Puede ser fijo o variable)

<?php 

function restrict_entry_access_a($post_id) {
    if ( is_user_logged_in() ) {
        $user = wp_get_current_user();
        if ( ! in_array( 'administrator', (array) $user->roles ) ) {
            $user_id = get_current_user_id();
            $product_ids = get_post_meta( $post_id, 'producto-relacionado', true );
            if (empty($product_ids)){
                return "Acceso permitido";
            }
            $completed_orders = wc_get_orders( array(
                'customer_id' => $user_id,
                'status'      => 'completed',
            ) );
            if (empty($completed_orders)){
                return "no hay ordenes completadas";
            }
            $purchased_products = array();
            foreach ( $completed_orders as $order ) {
                $items = $order->get_items();
                foreach ( $items as $item ) {
                    $purchased_products[] = $item->get_product_id();
                }
            }
            if ( ! empty( $product_ids ) ) {
                foreach ( $product_ids as $product_id ) {
                    if ( ! in_array( $product_id, $purchased_products ) ) {
                        return "Acceso denegado";
                    }
                }
            }
        }
    }
    else {
        return "Acceso denegado";
    }
    return "Acceso permitido";
}

Llamar a la funcion fija seria asi:

Llamar a la funcion dinamica asi:

Para usar en Grids por ejemplo

Codigo para usar dentro de el post (no se puede usar en grids)

Se podria usar el mismo codigo que el dinamico y poner en el post id que diga "Current post" y listo. O la misma variable lo determina creo. En este caso el codigo tiene el custom post nombrado para verificar.
<?php 

function restrict_entry_access_reply() {
    if ( is_singular('content') ) {
      if ( is_user_logged_in() ) {
          $user = wp_get_current_user();
          if ( ! in_array( 'administrator', (array) $user->roles ) ) {
            global $post;
            $user_id = get_current_user_id();
            $product_ids = get_post_meta( $post->ID, 'producto-relacionado', true );
            $completed_orders = wc_get_orders( array(
                'customer_id' => $user_id,
                'status'      => 'completed',
            ) );
            $purchased_products = array();
            foreach ( $completed_orders as $order ) {
                $items = $order->get_items();
                foreach ( $items as $item ) {
                    $purchased_products[] = $item->get_product_id();
                }
            }
            if ( ! empty( $product_ids ) ) {
                $access = true;
                foreach ( $product_ids as $product_id ) {
                    if ( ! in_array( $product_id, $purchased_products ) ) {
                        $access = false;
                        break;
                    }
                }
                if(!$access) {
                    return "Acceso denegado";
                } else {
                    return "Acceso permitido";
                }
            } else {
                return "Acceso denegado";
            }
          }
        } else {
            return "Acceso denegado";
        }
    }
}

IDEA 2

Mostrar los ID de productos que compro el usuario logueado

El codigo debajo evalua eso y devuelve los items comprados (que no fueron reembolsados)

Codigo

<?php 

function purchased_products_ids() {
    // Obtener el ID del usuario actual
    $user_id = get_current_user_id();
    // Obtener todos los pedidos del usuario actual
    $customer_orders = wc_get_orders( array(
        'customer_id' => $user_id,
    ) );
    // Inicializar un array para almacenar los IDs de producto
    $product_ids = array();
    // Recorrer cada pedido
    foreach ( $customer_orders as $order ) {
        // Revisar si el pedido esta completado
        if ($order->get_status() === 'completed') {
            // Recorrer cada artículo del pedido
            foreach ( $order->get_items() as $item ) {
                // Añadir el ID del producto al array
                $product_ids[] = $item->get_product_id();
            }
        }
    }
    // Eliminar los productos duplicados
    $product_ids = array_unique( $product_ids );
    // Imprimir los IDs de producto
    return 'Product IDs: ' . implode( ', ', $product_ids );
}

IDEA 3

Mostrar las membresias de Woocommerce memberships activas del usuario logueado

El codigo debajo evalua eso y devuelve las membresías activas de Woocommerce Membership de los usuarios
{je_content_cover-image}
This is a member. - Guias Bricks

Codigo

<?php 

function active_memberships() {
    // Obtener el ID del usuario actual
    $user_id = get_current_user_id();
    // Obtener las membresías activas del usuario actual
    $user_memberships = wc_memberships_get_user_memberships( $user_id );
    // Inicializar un array para almacenar los IDs de membresías
    $memberships = array();
    // Recorrer cada membresía
    foreach ( $user_memberships as $user_membership ) {
        // Revisar si la membresía esta activa
        if ( 'active' === $user_membership->get_status() ) {
            // Añadir el ID de la membresía y su nombre al array
            $memberships[] = $user_membership->get_plan_id() . ' - ' . $user_membership->get_plan()->get_name();
        }
    }
    // Eliminar los IDs de membresía duplicados
    $memberships = array_unique( $memberships );
    // Compruebe si el array de miembros está vacío o no
    if (empty($memberships)) {
        return 'Free';
    } else {
        // Imprimir los IDs de membresía y su nombre
        return 'Memberships: ' . implode( ', ', $memberships );
    }
}

IDEA 4

Restringir a un usuario logueado a entrar en un post que no haya comprado el producto relacionado (Es de Wordpress en general)

Habilita a entrar o no al usuario a un determinado post luego de comprobar eso, en caso contrario redirige a la persona a una pagina. Vale para cualquier builder.

Codigo

<?php 

function restrict_entry_access() {
    if ( is_singular('content') ) {
      if ( is_user_logged_in() ) {
          $user = wp_get_current_user();
          if ( ! in_array( 'administrator', (array) $user->roles ) ) {
            global $post;
            $user_id = get_current_user_id();
            $product_ids = get_post_meta( $post->ID, 'producto-relacionado', true );
            $completed_orders = wc_get_orders( array(
                'customer_id' => $user_id,
                'status'      => 'completed',
            ) );
            $purchased_products = array();
            foreach ( $completed_orders as $order ) {
                $items = $order->get_items();
                foreach ( $items as $item ) {
                    $purchased_products[] = $item->get_product_id();
                }
            }
            if ( ! empty( $product_ids ) ) {
                foreach ( $product_ids as $product_id ) {
                    if ( ! in_array( $product_id, $purchased_products ) ) {
                        wp_redirect( '/login/' );
                        exit;
                    }
                }
            }
          }
        }
      else {
        wp_redirect( '/login/' );
        exit;
      }
    }
}
add_action( 'template_redirect', 'restrict_entry_access' );

IDEA 5

Formas de hacer Queries u ocultar en grids

Estan son todas ideas que todavia ninguna funciona bien, pero es para ver cual encuentro factible

Idea 1

Crear un campo personalizado en el post que se llame "mostrar" pornerle respuesta "si" o "no". Luego hacer un condional contra eso para ocultarlo o mostrarlo en el loop del grid.

Aparentemente deja el espacio en blanco, por eso no funciona. Pero vale la pena testear de nuevo.

Idea 2

Con ese campo "mostrar". Hacer un query que filtre por Meta Query. Asi se filtra.
Aparentemente no funciona. Pero vale la pena testear de nuevo.
Lo mismo se podria hace con un campo personalizado que sea de texto y yo le ponga los numero de ID de producto relacionados. Separados por coma o algo por el estilo. Y luego comparar el query contra eso.

Idea 3

Hacer un Listing Grid con Jetengine, con un Custom Query, con su Query Builder y ahi mostrar lo que deseo. Si hago esto, no implica restringir nada, por lo tanto en ese caso tendría que asegurarme que la restriccion funcione bien. 

IDEA 4

Grid donde muestra distinas cosas de los items

Habilita a entrar o no al usuario a un determinado post luego de comprobar eso, en caso contrario redirige a la persona a una pagina. Vale para cualquier builder.

Codigo

Titulo: CD-1
Verificador de acceso por PHP directo:
Verificador de por condicional PHP:
Comprueba si pueda accesder con un condicional que muestra el texto, solo si al comparar contra la funcion da "permitido". Sino lo oculta.
Titulo: CD-1
Verificador de acceso por PHP directo:
Verificador de por condicional PHP:
Comprueba si pueda accesder con un condicional que muestra el texto, solo si al comparar contra la funcion da "permitido". Sino lo oculta.
Titulo: CD-2
Verificador de acceso por PHP directo:
Verificador de por condicional PHP:
Comprueba si pueda accesder con un condicional que muestra el texto, solo si al comparar contra la funcion da "permitido". Sino lo oculta.
Titulo: CD-2
Verificador de acceso por PHP directo:
Verificador de por condicional PHP:
Comprueba si pueda accesder con un condicional que muestra el texto, solo si al comparar contra la funcion da "permitido". Sino lo oculta.
Titulo: CD-3
Verificador de acceso por PHP directo:
Verificador de por condicional PHP:
Comprueba si pueda accesder con un condicional que muestra el texto, solo si al comparar contra la funcion da "permitido". Sino lo oculta.
Titulo: CD-3
Verificador de acceso por PHP directo:
Verificador de por condicional PHP:
Comprueba si pueda accesder con un condicional que muestra el texto, solo si al comparar contra la funcion da "permitido". Sino lo oculta.
Titulo: CD-4
Verificador de acceso por PHP directo:
Verificador de por condicional PHP:
Comprueba si pueda accesder con un condicional que muestra el texto, solo si al comparar contra la funcion da "permitido". Sino lo oculta.
Titulo: CD-4
Verificador de acceso por PHP directo:
Verificador de por condicional PHP:
Comprueba si pueda accesder con un condicional que muestra el texto, solo si al comparar contra la funcion da "permitido". Sino lo oculta.
Titulo: CD-5
Verificador de acceso por PHP directo:
Verificador de por condicional PHP:
Comprueba si pueda accesder con un condicional que muestra el texto, solo si al comparar contra la funcion da "permitido". Sino lo oculta.
Titulo: CD-5
Verificador de acceso por PHP directo:
Verificador de por condicional PHP:
Comprueba si pueda accesder con un condicional que muestra el texto, solo si al comparar contra la funcion da "permitido". Sino lo oculta.